import com.google.gson.Gson;
import domain.User;

import java.io.*;
import java.net.CookieManager;
import java.util.ArrayList;
import java.util.Scanner;

/**
 * 1. “剪刀石头布”的游戏相信大家都不陌生，本案例要求编写一个剪刀石头布游戏的程序。
 * 程序启动后会随机生成1~3的随机数，分别代表剪刀、石头和布，玩家通过键盘输入剪刀、石头和布与电脑进行5轮的游戏，赢的次数多的一方为赢家。若五局皆为平局，则最终结果判为平局。
 */
public class app {

    // 箭头
    private static final String JIANDAO = "1";
    // 石头
    private static final String SHITOU = "2";
    // 布
    private static final String BU = "3";


    private static String SUCCESS_GAME = "!![ 系统提示 ->      结果：这局你赢啦! ]]!!";
    private static String FALSE_GAME = "!![ 系统提示 ->    结果：这局你输了 !]]!!";
    private static String DAPING_GAME = "!![ 系统提示 ->      结果：这局打平啦！]]!!";

    public static void main(String[] args) throws IOException {



        // 游戏的总局数
        int juShu = 5;

        // 游戏赢的次数
        Integer success = 0;
        int flag = 0;

        Scanner scanner = new Scanner(System.in);

        BufferedReader reader = new BufferedReader(new FileReader("D:\\result.txt"));
        ArrayList<User> list = new ArrayList<>();
        String content;

        while((content=reader.readLine())!=null) {
            User user = new Gson().fromJson(content, User.class);
            list.add(user);

        }

        System.out.println("================游戏分数名单=====================");
        if(list.size() > 0) {
            for (User u  : list){
                System.out.println("姓名："+u.getUsernames()+"\t胜利次数："+u.getSuccess());
            }

        }



        System.out.print("\n请输入您的名字：");
        String username = scanner.nextLine();


        while (flag == 0) {
            // 程序启动后会随机生成1~3的随机数
            // 1.随机生成1-3一个数字
            Integer randomNum = (int) (Math.random() * 3 + 1);
            String computeNumber = randomNum.toString();

            // 2.键盘录入用户输入的数字

            System.out.print("\n\n\t\t【欢迎玩石头剪刀布游戏】\n游戏规则：请你输入1-3的数，【 剪刀 = 1 ；石头 = 2；布 = 3】\n\n请输入的数字：\n-> ");

            if (juShu == 0) {

                //1.创建字符缓冲输出流对象,构造方法中传递字符输出流
                BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\result.txt",true));
                User user = new User(username,success.toString());

                String json = new Gson().toJson(user);
                bw.write(json);
                bw.newLine();
                bw.flush();
                bw.close();
                System.out.println("\n游戏次数结束，你赢了：" + success);
                // 这里五次游戏结束，对用户数据，和玩的成功次数记录在文件中
                break;
            }
            String inputContent = scanner.nextLine();


            System.out.println("电脑输入："+computeNumber);
            System.out.println("用户输入："+inputContent);


            // 3.判断输入的内容进行比对
            if (computeNumber.equals(JIANDAO)) { // 系统出的是剪刀

                // 剪刀 跟 用户输入的内容进行对比
                if (inputContent.equals(JIANDAO)) { // 这局就是：剪刀对剪刀
                    System.out.println(DAPING_GAME);
                    --juShu;



                } else if (inputContent.equals(SHITOU)) { // 这时候就是用户石头，系统剪刀
                    System.out.println(SUCCESS_GAME);
                    success++;
                    --juShu;


                } else if (inputContent.equals(BU)) { // 剪刀对布
                    System.out.println(FALSE_GAME);
                    --juShu;



                }

            } else if (computeNumber.equals(SHITOU)) { // 系统出的是石头
                // 石头 跟 用户输入的内容进行对比
                if (inputContent.equals(JIANDAO)) { // 这局就是：石头对剪刀
                    System.out.println(FALSE_GAME);
                    --juShu;

                } else if (inputContent.equals(SHITOU)) { // 这时候就是用户石头，系统石头
                    System.out.println(DAPING_GAME);
                    success++;
                    --juShu;


                } else if (inputContent.equals(BU)) { // 石头 对 布
                    System.out.println(SUCCESS_GAME);
                    --juShu;


                }

            } else if (computeNumber.equals(BU)) { // 系统出的是布
                juShu--;
                // 布 跟 用户输入的内容进行对比
                if (inputContent.equals(JIANDAO)) { // 这局就是：布对剪刀
                    System.out.println(SUCCESS_GAME);
                    success++;
                    --juShu;



                } else if (inputContent.equals(SHITOU)) { // 这句：布对石头
                    System.out.println(FALSE_GAME);
                    success++;
                    --juShu;


                } else if (inputContent.equals(BU)) { // 布对布
                    System.out.println(DAPING_GAME);
                    --juShu;

                }
            }

            System.out.println("总局数："+juShu);
        }


    }


}
